﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Collections;

public partial class Forma_7 : System.Web.UI.Page
{
    private String SessionID;
    private Boolean FolioExists;
    private Int32 Folio;

    private void Page_Load(object sender, EventArgs e)
    {
        SessionValidation();

        // Se verifíca si existe un Folio actual para cargar los datos
        // que han sido previamente guardados
        DatabaseConnection dbCon = new DatabaseConnection();
        FolioExists = dbCon.FolioExistsForCurrentUser(ref Folio, SessionID);
        dbCon.CloseConnection();
        if (FolioExists && !Page.IsPostBack)
        {
            LoadFormWithPastData();
        }
    }

    private void LoadFormWithPastData()
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        SqlDataReader ConceptoReader;
        int index;

        string myCommand = "SELECT * " +
                       "FROM [wbecfildb].[dbo].[DocumentacionSituacionEconomica] " +
                       "WHERE DocumentacionSituacionEconomica.[Folio] = " + Folio + ";";

        ConceptoReader = dbCon.ExecuteSelect(myCommand);
        while (ConceptoReader.Read())
        {

            String concepto = ConceptoReader["DocumentacionSituacionEconomica_Concepto"].ToString();
            String valor = ConceptoReader["DocumentacionSituacionEconomica_Check"].ToString();
            String tipo = ConceptoReader["DocumentacionSituacionEconomica_Tipo"].ToString();

            if (tipo.Equals("Documentacion"))
            {
                index = DocEconomicaList.Items.IndexOf(DocEconomicaList.Items.FindByText(concepto));
                if (index > -1)
                {
                    DocEconomicaList.Items[index].Selected = Boolean.Parse(valor);
                }
            }
            else
            { //Situación

                index = SituacionEconomicaList.Items.IndexOf(SituacionEconomicaList.Items.FindByText(concepto));
                if (index > -1)
                {
                    SituacionEconomicaList.Items[index].Selected = Boolean.Parse(valor);
                }
            }
        }

        ConceptoReader.Close();
        dbCon.CloseConnection();
    }

    protected void InsertData(object sender, EventArgs e)
    {
        DatabaseConnection dbCon = new DatabaseConnection();
        SqlDataReader ConceptoReader;
        String query;
        int rowsAffected;

        for (int counter = 0; counter < DocEconomicaList.Items.Count; counter++)
        {
            string myCommand = "SELECT COUNT([IdDSE]) AS 'Existe' " +
                           "FROM [wbecfildb].[dbo].[DocumentacionSituacionEconomica] " +
                           "WHERE DocumentacionSituacionEconomica.[Folio] = " + Folio + " " +
                           "AND [DocumentacionSituacionEconomica].[DocumentacionSituacionEconomica_Concepto] = '" + DocEconomicaList.Items[counter].Value + "';";

            ConceptoReader = dbCon.ExecuteSelect(myCommand);
            if (ConceptoReader.Read())
            {
                Boolean existeConcepto = !ConceptoReader["Existe"].ToString().Equals("0");
                if (existeConcepto)
                {
                    //Update
                    query = "UPDATE [wbecfildb].[dbo].[DocumentacionSituacionEconomica] " +
                            "SET [Folio] = " + Folio + " , " +
                            "[DocumentacionSituacionEconomica_Concepto]    = '" + DocEconomicaList.Items[counter].Value + "', " +
                            "[DocumentacionSituacionEconomica_Check]       = '" + DocEconomicaList.Items[counter].Selected + "' " +
                            "WHERE DocumentacionSituacionEconomica.[Folio] =  " + Folio + " " +
                            "AND [DocumentacionSituacionEconomica].[DocumentacionSituacionEconomica_Concepto] = '" + DocEconomicaList.Items[counter].Value + "';";
                }
                else
                {
                    //Insert
                    query = "INSERT INTO [DocumentacionSituacionEconomica] " +
                        "([Folio], [DocumentacionSituacionEconomica_Concepto], [DocumentacionSituacionEconomica_Check], [DocumentacionSituacionEconomica_Tipo]) " +
                        "VALUES (" + Folio + ",'" + DocEconomicaList.Items[counter].Value + "','" + DocEconomicaList.Items[counter].Selected + "','Documentacion');";
                }
                ConceptoReader.Close();
                rowsAffected = dbCon.ExecuteNonQuery(query);
            } //END IF
        } //END FOR


        for (int counter = 0; counter < SituacionEconomicaList.Items.Count; counter++)
        {
            string myCommand = "SELECT COUNT([IdDSE]) AS 'Existe' " +
                           "FROM [wbecfildb].[dbo].[DocumentacionSituacionEconomica] " +
                           "WHERE DocumentacionSituacionEconomica.[Folio] = " + Folio + " " +
                           "AND [DocumentacionSituacionEconomica].[DocumentacionSituacionEconomica_Concepto] = '" + SituacionEconomicaList.Items[counter].Value + "';";

            ConceptoReader = dbCon.ExecuteSelect(myCommand);
            if (ConceptoReader.Read())
            {
                Boolean existeConcepto = !ConceptoReader["Existe"].ToString().Equals("0");
                if (existeConcepto)
                {
                    //Update
                    query = "UPDATE [wbecfildb].[dbo].[DocumentacionSituacionEconomica] " +
                            "SET [Folio] = " + Folio + " , " +
                            "[DocumentacionSituacionEconomica_Concepto]    = '" + SituacionEconomicaList.Items[counter].Value + "', " +
                            "[DocumentacionSituacionEconomica_Check]       = '" + SituacionEconomicaList.Items[counter].Selected + "' " +
                            "WHERE DocumentacionSituacionEconomica.[Folio] =  " + Folio + " " +
                            "AND [DocumentacionSituacionEconomica].[DocumentacionSituacionEconomica_Concepto] = '" + SituacionEconomicaList.Items[counter].Value + "';";
                }
                else
                {
                    //Insert
                    query = "INSERT INTO [DocumentacionSituacionEconomica] " +
                        "([Folio], [DocumentacionSituacionEconomica_Concepto], [DocumentacionSituacionEconomica_Check], [DocumentacionSituacionEconomica_Tipo]) " +
                        "VALUES (" + Folio + ",'" + SituacionEconomicaList.Items[counter].Value + "','" + SituacionEconomicaList.Items[counter].Selected + "','Situacion');";
                }
                ConceptoReader.Close();
                rowsAffected = dbCon.ExecuteNonQuery(query);
            }
        }

        dbCon.CloseConnection();
        Response.Redirect("~/Forma/Forma8.aspx");
    }

    /* Valida que la sesión del usuario sea la correcta para mostrar
    *  el contenido de esta página
    */
    protected void SessionValidation()
    {
        SessionID = (String)Session["SessionID"];
        String UserType = (String)Session["UserType"];

        if (String.IsNullOrEmpty(SessionID) || String.IsNullOrEmpty(UserType))
        {
            Session.RemoveAll();
            Response.Redirect("~/Default.aspx");
        }
        else
        {
            if (!String.Equals(UserType, "Alumnos"))
            {
                Session.RemoveAll();
                Response.Redirect("~/Default.aspx");
            }
        }
    }
}